<?php

require_once 'classes/TypeDeRace.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/**
 * Classe de service crud pour la gestion de typederace
 *
 * @author Alain
 */
class SCtypederace {
   
        private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute un Type de Race
    * @param TypeDeRace type de race à ajouter
     * @return Message
    */
   public function ajouter($unTypeDeRaceAAjouter) {
       try{
           
           $query =  $this->db->prepare("INSERT INTO typederace " .
                   "(nom) VALUES(:nom)");

           $query->execute(array(
                   'nom'              => $unTypeDeRaceAAjouter->getNom(),

               ));

               $query->closeCursor();
       }
       catch(PDOException $e)
        {
           
            return new Message("Type de race non ajouté:".$e->getMessage());
        }
               return $unTypeDeRaceAAjouter;
   }
   
    /**
     * Methode permettant de supprimer un TypeDeRace
     * @param TypeDeRace Type De Race à supprimer
     * @return Message 
     */
    public function supprimer($unTypeDeRaceASupprimer){
        try{
        $query = "DELETE FROM typederace WHERE nom='".$unTypeDeRaceASupprimer->getNom()."');";
                   
                $this->db->query($query);
                $message = new Message("Type de race supprimé");
          
                }
                catch(PDOException $e)
        {
            
            $message = new Message("Type de race non supprimé:".$e->getMessage());
        }
               return $message;
    }
   
    /**
     *
     * @param TypeDeRace TypeDeRace de recherche sous forme d'objet TypeDeRace
     * @return un tableau d'objet TypeDeRace
     */
    public function lister($typeDeRaceALister){
        try{
            $sql="SELECT * FROM typederace ";
            $sql_Where="WHERE";
            if($typeDeRaceALister != null){
                if($typeDeRaceALister->getNom()!=NULL){
                    $sql_Where.=" nom = '".$typeDeRaceALister->getNom()."' AND ";
                }    
            }


            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." order by nom;";
            $lesTypeDeRacesTrouvees=NULL;
            $unTypeLu=NULL;
            $result=$this->db->query($sql);
            while($row = $result->fetch())
            {   
                $unTypeLu = new TypeDeRace($row["nom"]);
               
                    $lesTypeDeRacesTrouvees[]=$unTypeLu;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesTypeDeRacesTrouvees=NULL;
        }
        return $lesTypeDeRacesTrouvees;
    }
    
    
    
}

?>